package com.wf.day_0618.test1;

import java.io.*;
import java.util.Properties;

/**
 * TestE 类用于演示如何使用属性文件来管理程序的使用次数。
 * 它通过读取和更新 count.properties 文件中的 count 属性来实现。
 * @author mpk
 */
public class TestE {

    // 定义属性文件的路径
    static File file = new File("src/com/wf/day_0618/test1/count.properties");

    /**
     * 程序入口。
     * @param args 命令行参数
     * @throws IOException 如果读写文件发生错误
     */
    public static void main(String[] args) throws IOException {
        // 检查属性文件是否存在，如果不存在则创建它
        if (!file.exists() && !file.isDirectory()) {
            file.createNewFile();
        }

        // 初始化 Properties 对象用于读取和写入属性文件
        Properties properties = new Properties();
        try (InputStream stream = new FileInputStream(file)) {
            // 打开属性文件的输入流，并加载属性到 Properties 对象中
            properties.load(stream);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

        // 获取属性文件中的 count 值，如果不存在则默认为 0
        int count = Integer.parseInt(properties.getProperty("count", "0"));

        // 检查使用次数是否已满
        if (count >= 3) {
            System.out.println("程序使用次数已满，请续费");
            System.exit(0);
        }

        // 更新使用次数并打印
        count++;
        System.out.println("当前运行次数：" + count);

        // 将更新后的使用次数写回属性文件
        properties.setProperty("count", String.valueOf(count));

        try (FileOutputStream outputStream = new FileOutputStream(file)) {
            // 写入属性文件，注释说明此次更新的操作
            properties.store(outputStream, "Update count");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
